package com.LFLWZ.service;

import com.LFLWZ.beans.POJO.*;
import com.LFLWZ.beans.Vo.ClassroomCourseVo;
import com.LFLWZ.beans.Vo.CourseByType;
import com.LFLWZ.beans.Vo.UserlogSheet;
import com.LFLWZ.beans.Vo.addLike;

import java.util.List;

/**
 * (ClassroomCourse)表服务接口
 *
 * @author lujum
 * @since 2020-12-03 01:41:25
 */
public interface ClassroomCourseService {



    /**
     * 按学习人数查询的优秀课程
     * @return
     */
    List<ClassroomCourse> selByStudyNumber();
    /**
     * 学习记录
     * @param uid
     * @return
     */
    List<UserlogSheet> selLog(Integer uid);
    /**
     *  查询指定分类的课程id
     * @param filtrate
     * @return
     */
    List<CourseFiltrate> selCourse_filtrate(Integer filtrate);

    /**获取所有分类
     * @return
     */
    List<filtrate> sel_filtrate();

    /**
     * 按分类 搜索 排序 标签 综合 分类
     * @param courseByType
     * @return
     */
    List<ClassroomCourse> selFiltrate(CourseByType courseByType);

    /**
     * 根据uid判断关注列表
     * @param uid
     * @return
     */
    List<ClassroomCourse> selByUid(Integer uid);
    /**
     * 根据用户id查询讲师发布的课程
     * @param uid
     * @return
     */
    List<ClassroomCourse> selByLecture(Integer uid);
    /**
     * 查询课程类型全部
     * @return
     */
    List<CourseType> selCourseType( CourseType courseType);

    /**
     * 跟新评分与学习人数
     * @param classroomCourse
     * @return
     */
    public Boolean updateScore(ClassroomCourseVo classroomCourse);
    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    ClassroomCourseVo queryById(Integer id);

    /**
     * 查询多条数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     * @return 对象列表
     */
    List<ClassroomCourse> queryAllByLimit(int offset, int limit);

    /**
     * 新增数据
     *
     * @param classroomCourseVo 实例对象
     * @return 实例对象
     */
    ClassroomCourseVo insert(ClassroomCourseVo classroomCourseVo);

    /**
     * 修改数据
     *
     * @param classroomCourseVo 实例对象
     * @return 实例对象
     */
    ClassroomCourseVo update(ClassroomCourseVo classroomCourseVo);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Integer id);

    /**
     * 通过实体作为筛选条件查询
     *
     * @return 对象列表
     */
    List<ClassroomCourse> queryAll(Integer id);
}